﻿#ifndef UIFILTERTABLEVIEW_H
#define UIFILTERTABLEVIEW_H

#include <QWidget>
#include <QModelIndex>
#include <QList>

#include "imodel.h"


/**
 * @class UiFilterTableView
 * 
 * 该类继承自QWidget，用于展示和管理一个带有筛选功能的表格视图。
 */
class UiFilterTableView : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数，创建一个UiFilterTableView实例。
     * @param parent 父QWidget，默认为nullptr。
     */
    explicit UiFilterTableView(QWidget *parent = nullptr);

    /**
     * @brief 向表格视图中追加数据。
     * @param data 要追加的数据，使用QSharedPointer<SSigInfo>类型表示。
     */
    void appendData(QSharedPointer<IModel> data);

    void appendData(QList<QSharedPointer<IModel> > sigs);

    void clearData();

    void applyFilter(const QString& field,const QString& text);

private slots:
    /**
     * @brief 处理删除信号，从表格中移除指定的数据项。
     * @param dataList 要删除的数据列表，使用QList<QSharedPointer<SSigInfo>>类型表示。
     */
    virtual void slotDeleteSig(const QList<QSharedPointer<IModel>>& dataList);

    /**
     * @brief 执行粘贴信号的操作。
     * 
     * 该函数没有参数。
     * 该函数没有返回值。
     */
    void slotPasteSig();


    void slotAddSig();

signals:
    /**
     * @brief 当数据更新时发出此信号。
     * @param data 更新后的数据，使用QSharedPointer<SSigInfo>类型表示。
     */
    void sigUpdateData(const QSharedPointer<IModel>& data,bool& ret);

protected:
    // 搜索控件，用于实现表格数据的筛选功能。
    class UiFieldSearchWidget* m_searchWidget = nullptr;
    // 指向QPushButton类的指针，用于触发高级搜索。
    class ElaIconButton* m_advanceSearchBtn = nullptr;
    // 指向UiAdvanceSearchDialog类的指针，用于展示高级搜索对话框。
    class UiAdvanceSearchDialog* m_advanceSearchDialog = nullptr;
    // 指向QPushButton类的指针，用于清除搜索条件。
    class QPushButton* m_clearSearchBtn = nullptr;
    // 按钮类指针，用于排序操作的触发
    class QPushButton* m_sortBtn = nullptr;
    // UI排序对话框类指针，用于展示和交互的排序设置界面
    class UiSortDialog* m_sortDialog = nullptr;
    // 添加按钮
    class QPushButton* m_addBtn = nullptr;
    // 表格视图控件，用于展示数据。
    class UiSigTableView* m_tableView = nullptr;
    class CFilterModel* m_filterModel = nullptr;
    // 表格模型，用于管理表格数据。
    class CTableModel* m_model = nullptr;
};

#endif // UIFILTERTABLEVIEW_H
